home *** CD-ROM | disk | FTP | other *** search
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Command;
- import javax.microedition.lcdui.CommandListener;
- import javax.microedition.lcdui.Displayable;
- import javax.microedition.lcdui.Font;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
- import javax.microedition.rms.RecordStore;
-
- class MyCanvas extends Canvas implements CommandListener, Runnable {
- Thread game0 = null;
- static int DISS_DELAY = 10;
- static int MOVE_DELAY = 2;
- // $FF: renamed from: g2 javax.microedition.lcdui.Graphics
- private Graphics field_0;
- static int gLT = 20;
- // $FF: renamed from: wY int
- private int field_1 = ((Canvas)this).getHeight();
- static int xSz = 8;
- static int ySz = 8;
- static int MAX_X = 11;
- static int MAX_Y = 8;
- static int MAX_IMG = 11;
- static int X_0 = 0;
- static int Y_0 = -1;
- private Image[] xImg;
- private static String mCode = " 0123456789 , # *.oO@+ ";
- private static String[] biDat = new String[]{", 1#7, 1#o.o.o.#, 1# 5#, 1# # # #1, 1# # 3#, 1# 4#1, 1#6,", ", 2#5, 2#.* 1#, 2# 3#, 2#. 2#, 2# 1.#1, 2#5,", ", 2#5, 1#1 3#1, 1#. o#. #, 1# 4o#, 1#1 . 1#1, 2#5,", ", 2#5, 2# 1. #, 2#1 1#1, 2# 2.#, 2#. 1#1, 2#4,", ", 2#2, 1#1 #2, 1# . 1#1, 1#* . 1#1, 1# 1* . #, 1# # 1#2, 1#5,", ", 1#7, 1#o 3o#, 1# # 1# #, 1# 1. 2#, 1#1. . #1, 1# 1o . #, 1#7,", " 2#5 , 1#1 . *#1, 1# 4.#, 1# 5#, 1#. 4#, 1#1 3#1, 2#1* #1, 3#3,", ", 1#6, 1# 3.#, 1#. 2#1, 1# 1* 1#, 1# 3#1, 1#2.#1, 3#2,", ", #72, # 1. 2* #, #1 1*. 1#1, 1# *. * #, 1#. 3.#, 1#7,", ", 3#4, 2#1 . #1, 1#1 4#, 1#. 3.#, 1# 2#1*#, 1#7,", " 5#2, 1#4.#1, 1#. 4#, 1#1 2* #, 2#1 # #1, 3# #2, 3# 1.#, 3#4,", ", 1#6, 1# 4#, 1#1 .* #, 1#. 3#, 1#* 2.#, 1# 2* #, 1#6,", " #72, # 7#, # 7#, # #1 4#, #.*.#*. 1#, # 2# 3#, # 7#, #2 #5, 2#2,", ", 1#6, 1# .# o#1, 1#1 3o#, 2# 3#1, 2#* 2.#, 2#.o 1#1, 2#5,", ", 2#5, 1#1. 2#, 1# 3.#, 1#1 * #1, 1# 4#, 1#1 2.#, 2#5,", ", 3#2, 2#1 #3, 1#1 4#, 1# 5#, 1# .o#.o#, 1#1o#2.#, 2#2 #2,", " 4#2, 1#3O#1, 1# o. 1#, 1# # o.#2, #1 4O*#, # 5o#1, #1 O# 1#1, 1#6,", " 5#2, 3#2 #1, 2#1. 2#, 2# 2o#1, 1#2 . 1#, 1# 1o .#1, 1#1 1o#1, 2#4,", ", 2#5, 1#1 1o #1, 1#o 3.#, 1#. 2* #, 1#1 . 2#, 2#3 #1, 5#2,", ", 1#4, 1#. 1#1, 1# 3#1, 1# o o.#, 1#2. 1#, 3# 2#, 3#4,", " 3#4, 2#1 O # , 1#1 3#1, #1.O 3#, # 2o 1#1, # 1#2.# , # O o 1#, #7,", " 1#2, #1 #4, #. 2O #, # 2#1.#1, # 1Oo# 1#, # o# 2#1, # 2. o #, #O 1#1 #1, #7,", " 2#2, 2# #2, 2# 1o#1, 2#*. o#1, 2# #O o#, 1#1 2# #, 1# . 2O#, 1#1O 2#1, 2#5,", " #71, # Oo.oO #, # 2o 2#, # 2O 2#, # 2o 2#, # o . O #, #1 1# 1#1, 1#6 ,", " 2#4, 1#1 # #1, 1# .# 1#1, 1#1 #. 1#, 1# 5#, 1#1 * 1.#, 2#1 2#1, 3#1 #1, 4#2,", " 2#5, 1#1 1# #1, 1#.*o.*.#1, 1# 6#, 1# #1 # 1#, #1 2#1 1#, # o 4#1, #1 4#1, 1#6,", " 3#3, 2#1 1#3, 2# . 3#, 2# 1#.#2, #2 # # #, # 3. #1, #3 1#1, 3#3,", " 1#5, 1# # 1#1, 1# 1. 1#, #2. * #1, # 3#. #, #1 2#3, 1#2 #, 3#2,", " 1#7, 1# # o 1#1, 1# . #o 1#, #1.# o 1#1, # 1. # #1, # 4#1, #1 #3, 1#2,", " 1#5, 1# 1o.#1, 1# . #o#1, 1# * 3#, 1#o 4#, 1#1 2.#1, 2#1 1#1, 3#3,", " 2#5, 2# # .#1, 2# 1o 1#, 1#2. * #, 1#. 3#1, 1#1o 2#, 2# 3#, 2#5,", " 5#2, 4#1*#, 3#1. #, 2#1. 1#1, 1#1 4#, 1# 4.#, 1#o 1* o#, 1#7,", " 2#7, #2 #1 2#, # 5. #, #* 4O#1, #O 4#1, #o . #o#1, #. 1#1 1#, # #Oo 1.#, #71,", " 2#5, 2#. 2#1, 1#1 # O #, 1# 1Oo# #, 1# 2Oo #, 1#1 o# 1#, 2# 2.#1, 2#5,", ", 1#5, 1# 1o #1, 1# O# o#, 1#o 1O.#1, 1# 5#, 1#1. 2O#, 2#6,", " 1#5, 1# O .#1, 1#1 2O#1, 2# o#. #, 1#1 3o#, 1#O #O 1#, 1# o 3#, 1#1 #4, 2#2,", " 2#4, 1#1O 1#, 1# o 1#1, 1#1. 2#, 1# O.o*#, 1#1 2.#1, 2# 2o #, 2#1 3#, 3#5,", " 2#6, 2# 1. o#, 1#1 o# 1#, 1# 2# 1#, 1#1 3#1, 2#. 2#1, 2# 2o #, 2#1 .# #, 3#5,", ", 2#4, 1#1 1.#1, 1# . # #1, 1#1 . 1o#, 1#2o *.#, 1# . * o#, 1#7,", " 1#7, #1 o 1O #, # 4o#1, #1 5#, # 1O 1.#1, #1. 2*#, 1#1o 2#, 1# . 1O#, 1#6,"};
- static byte MAX_MOVE = 12;
- private static int[] aMove = new int[]{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10};
- static int MAX_LEVEL;
- private byte[] xDat;
- private byte[] xMove;
- static final String DATAFILE = "D";
- private int xPos;
- private int yPos;
- private int mvPos;
- private int gLevel;
- private int maxMove;
- private byte[][] currCanvas;
- private byte pmStat;
- static String mvName;
- private int hisKey;
- static int[] hisKeys;
- private Command cmInfo;
- private Command cmAbout;
- private Command cmExit;
- private Eliminator midlet;
- private String txt;
- // $FF: renamed from: rs javax.microedition.rms.RecordStore
- private RecordStore field_2;
- private Font font;
-
- public MyCanvas(Eliminator var1) {
- this.xImg = new Image[MAX_IMG + 1];
- this.xDat = new byte[2 + MAX_LEVEL * 4];
- this.xMove = new byte[1 + MAX_MOVE];
- this.currCanvas = new byte[MAX_Y + 1][MAX_X + 1];
- this.pmStat = 0;
- this.hisKey = 0;
- this.cmInfo = new Command("Info", 1, 0);
- this.cmAbout = new Command("About", 1, 1);
- this.cmExit = new Command("Exit", 1, 2);
- this.txt = "Eliminator v1.1";
- this.field_2 = null;
- this.font = Font.getFont(64, 1, 8);
- this.midlet = var1;
-
- for(int var2 = 0; var2 <= MAX_IMG; ++var2) {
- this.xImg[var2] = Image.createImage(8, 8);
-
- try {
- this.xImg[var2] = Image.createImage("t" + var2 + ".png");
- } catch (Exception var5) {
- }
- }
-
- try {
- this.field_2 = RecordStore.openRecordStore("D", false);
- this.field_2.getRecord(1, this.xDat, 0);
- } catch (Exception var6) {
- for(int var7 = 0; var7 < MAX_LEVEL; ++var7) {
- this.xDat[1 + 4 * var7] = 0;
- }
-
- this.xDat[0] = 0;
- }
-
- try {
- this.field_2.closeRecordStore();
- } catch (Exception var4) {
- }
-
- this.gLevel = this.xDat[0];
- this.dat2Canvas(0);
- ((Displayable)this).addCommand(this.cmInfo);
- ((Displayable)this).addCommand(this.cmExit);
- ((Displayable)this).addCommand(this.cmAbout);
- ((Displayable)this).setCommandListener(this);
- this.game0 = new Thread(this);
- this.game0.start();
- }
-
- public void run() {
- }
-
- public void dStat(int var1) {
- String var5;
- switch (this.pmStat) {
- case 1:
- var5 = "*";
- break;
- case 3:
- int var4 = (this.mvPos & 3) << 1;
- byte var3 = (byte)(this.xDat[1 + 4 * this.gLevel + 1 + (this.mvPos >> 2)] >> var4 & 3);
- this.hisKey = hisKeys[var3];
- var5 = mvName.substring(var3, var3 + 1);
- break;
- default:
- var5 = " ";
- }
-
- if (var1 == 1 || this.pmStat > 0) {
- this.dString(var5, 24, 1, 8);
- }
-
- }
-
- public void dString(String var1, int var2, int var3, int var4) {
- this.field_0.setColor(0, 0, 0);
- this.field_0.fillRect(var2, this.field_1 - 10, var4, 10);
- this.field_0.setColor(255, 255, 255);
- this.field_0.drawString(var1, var2 + var3, this.field_1 - 9, gLT);
- this.field_0.setColor(0, 0, 0);
- }
-
- public void dMove() {
- this.dStat(1);
- if (this.mvPos > 0) {
- this.dString(" " + this.mvPos + " of " + this.maxMove, 33, 2, 60);
- } else {
- this.dString("By RizaPN", 33, 2, 60);
- }
-
- }
-
- public void paint(Graphics var1) {
- String var2 = "" + (1000 + this.gLevel);
- var2 = var2.substring(1, 4);
- this.field_0 = var1;
- int var3 = Y_0;
-
- for(int var4 = 0; var4 <= MAX_Y; ++var4) {
- int var5 = X_0;
-
- for(int var6 = 0; var6 <= MAX_X; ++var6) {
- byte var7 = this.currCanvas[var4][var6];
- if (var7 == 4 || var7 == 5) {
- this.xPos = var6;
- this.yPos = var4;
- }
-
- if (var7 < 0 || var7 > MAX_IMG) {
- var7 = 0;
- }
-
- var1.drawImage(this.xImg[var7], var5, var3, gLT);
- var5 += 8;
- }
-
- var3 += 8;
- }
-
- var1.setFont(this.font);
- this.dString(var2, 0, 2, 23);
- this.dMove();
- }
-
- public void keyPressed(int var1) {
- byte var2 = 0;
- int var3 = 0;
- boolean var4 = false;
- int var5 = 0;
- String var9 = "";
- if (var1 == 35 && this.pmStat == 3) {
- var1 = this.hisKey;
- }
-
- switch (var1) {
- case -62:
- case 54:
- var2 = 1;
- var5 = 7;
- break;
- case -61:
- case 52:
- var2 = -1;
- var5 = 5;
- break;
- case -60:
- case 56:
- var3 = 1;
- var5 = 3;
- break;
- case -59:
- case 50:
- var3 = -1;
- var5 = 1;
- break;
- case -1:
- case 48:
- var5 = -100;
- break;
- case 42:
- if (this.pmStat == 0) {
- return;
- }
-
- this.pmStat = 3;
- var5 = -100;
- break;
- case 49:
- var5 = -101;
- break;
- case 51:
- var5 = -99;
- break;
- case 55:
- var5 = -110;
- break;
- case 57:
- var5 = -90;
- }
-
- if (var2 == 0 && var3 == 0) {
- if (var5 < 0) {
- this.dat2Canvas(var5 + 100);
- ((Canvas)this).repaint();
- }
-
- } else {
- this.xMove[this.mvPos++] = (byte)var5;
- this.dMove();
- var5 = 1;
-
- while(var5 > 0) {
- var5 = this.moveBall(var2, var3);
- if (var5 > 0) {
- var5 = this.checkBoard();
- }
- }
-
- var5 = this.GameEnd();
- if (var5 == 1) {
- var5 = -98;
- var9 = "OK.CLEAR";
- var3 = 1 + 4 * this.gLevel;
- if (this.xDat[var3] == 0 || this.mvPos < this.xDat[var3]) {
- this.xDat[var3] = (byte)this.mvPos;
- ++var3;
- this.xDat[var3] = 0;
-
- for(int var12 = 0; var12 < this.mvPos; ++var12) {
- byte var7 = (byte)((this.xMove[var12] & 7) >> 1 << ((var12 & 3) << 1));
- this.xDat[var3] |= var7;
- if ((var12 & 3) == 3) {
- ++var3;
- this.xDat[var3] = 0;
- }
- }
- }
- } else if (var5 == -1 || this.mvPos >= this.maxMove) {
- var5 = -99;
- var9 = "TRY AGAIN";
- }
-
- if (var5 <= -98) {
- this.dString(var9, 33, 2, 60);
- if (this.pmStat != 3) {
- try {
- Thread.sleep(1100L);
- } catch (InterruptedException var11) {
- }
-
- this.dat2Canvas(var5 + 99);
- ((Canvas)this).repaint();
- } else {
- ++this.gLevel;
- this.pmStat = 0;
- }
- }
-
- }
- }
-
- public boolean dat2Canvas(int var1) {
- byte var6 = 0;
- byte var7 = 0;
- this.gLevel += var1;
- if (this.gLevel < 0) {
- this.gLevel = 0;
- }
-
- if (this.gLevel >= MAX_LEVEL) {
- this.gLevel = MAX_LEVEL - 1;
- }
-
- String var8 = biDat[this.gLevel];
-
- for(int var4 = 0; var4 <= MAX_Y; ++var4) {
- for(int var3 = 0; var3 <= MAX_X; ++var3) {
- this.currCanvas[var4][var3] = 0;
- }
- }
-
- int var11 = 0;
- int var10 = 0;
-
- for(int var2 = 0; var2 < var8.length(); ++var2) {
- var6 = (byte)mCode.indexOf(var8.charAt(var2));
- if (var6 % 15 <= MAX_IMG && var10 <= MAX_X) {
- int var5;
- if (var6 > 1 && var6 < 10) {
- var5 = var6 - 1;
- } else {
- var5 = 1;
- var7 = (byte)(var6 % 15);
- if (var7 < 0) {
- var7 = 0;
- }
- }
-
- while(var5 >= 1) {
- this.currCanvas[var11][var10] = var7;
- ++var10;
- --var5;
- if (var10 > MAX_X) {
- break;
- }
- }
- } else {
- var7 = (byte)(MAX_IMG + 1);
- var10 = 0;
- ++var11;
- if (var11 > MAX_Y) {
- break;
- }
- }
- }
-
- for(int var9 = 0; var9 < MAX_MOVE; ++var9) {
- this.xMove[var9] = 0;
- }
-
- this.mvPos = 0;
- this.xDat[0] = (byte)this.gLevel;
- this.maxMove = aMove[this.gLevel];
- if (this.pmStat != 3 || var1 != 0) {
- if (this.xDat[1 + 4 * this.gLevel] > 0) {
- this.pmStat = 1;
- } else {
- this.pmStat = 0;
- }
- }
-
- return true;
- }
-
- public int moveBall(int var1, int var2) {
- int var11 = 0;
- if (var1 != 0) {
- int var6 = Y_0;
-
- for(int var4 = 0; var4 <= MAX_Y; ++var4) {
- int var3;
- if (var1 == 1) {
- var3 = MAX_X - 1;
- } else {
- var3 = 1;
- }
-
- for(; var3 > 0 && var3 < MAX_X; var3 -= var1) {
- byte var9;
- if ((var9 = this.currCanvas[var4][var3]) >= 6) {
- int var7 = var3;
- int var5 = X_0 + xSz * var3;
-
- while(var7 > 0 && var7 < MAX_X && this.currCanvas[var4][var7 + var1] == 0) {
- try {
- Thread.sleep((long)MOVE_DELAY);
- } catch (InterruptedException var14) {
- }
-
- ++var11;
- this.currCanvas[var4][var7] = 0;
- this.field_0.drawImage(this.xImg[0], var5, var6, gLT);
- var7 += var1;
- var5 += xSz * var1;
- this.currCanvas[var4][var7] = var9;
- this.field_0.drawImage(this.xImg[var9], var5, var6, gLT);
- }
- }
- }
-
- var6 += ySz;
- }
- }
-
- if (var2 != 0) {
- int var17 = X_0;
-
- for(int var15 = 0; var15 <= MAX_X; ++var15) {
- int var16;
- if (var2 == 1) {
- var16 = MAX_Y - 1;
- } else {
- var16 = 1;
- }
-
- for(; var16 > 0 && var16 < MAX_Y; var16 -= var2) {
- byte var19;
- if ((var19 = this.currCanvas[var16][var15]) >= 6) {
- int var8 = var16;
- int var18 = Y_0 + ySz * var16;
-
- while(var8 > 0 && var8 < MAX_Y && this.currCanvas[var8 + var2][var15] == 0) {
- try {
- Thread.sleep((long)MOVE_DELAY);
- } catch (InterruptedException var13) {
- }
-
- ++var11;
- this.currCanvas[var8][var15] = 0;
- this.field_0.drawImage(this.xImg[0], var17, var18, gLT);
- var8 += var2;
- var18 += ySz * var2;
- this.currCanvas[var8][var15] = var19;
- this.field_0.drawImage(this.xImg[var19], var17, var18, gLT);
- }
- }
- }
-
- var17 += xSz;
- }
- }
-
- return var11;
- }
-
- public int checkBoard() {
- int var3 = 0;
- boolean var4 = false;
- byte var2 = 100;
-
- for(int var5 = 0; var5 < MAX_Y; ++var5) {
- for(int var6 = 0; var6 < MAX_X; ++var6) {
- byte var1 = (byte)(this.currCanvas[var5][var6] % var2);
- if (var1 >= 7) {
- if (var1 == this.currCanvas[var5][var6 + 1] % var2) {
- this.currCanvas[var5][var6] = this.currCanvas[var5][var6 + 1] = (byte)(var1 + var2);
- ++var3;
- }
-
- if (var1 == this.currCanvas[var5 + 1][var6] % var2) {
- this.currCanvas[var5][var6] = this.currCanvas[var5 + 1][var6] = (byte)(var1 + var2);
- ++var3;
- }
- }
- }
- }
-
- if (var3 == 0) {
- return 0;
- } else {
- for(int var12 = 2; var12 <= 6; ++var12) {
- try {
- Thread.sleep((long)DISS_DELAY);
- } catch (InterruptedException var11) {
- }
-
- int var7 = Y_0;
-
- for(int var8 = 0; var8 < MAX_Y; ++var8) {
- int var9 = X_0;
-
- for(int var10 = 0; var10 < MAX_X; ++var10) {
- if (this.currCanvas[var8][var10] > MAX_IMG) {
- if (var12 < 6) {
- this.field_0.drawImage(this.xImg[var12], var9, var7, gLT);
- } else {
- this.currCanvas[var8][var10] = 0;
- this.field_0.drawImage(this.xImg[0], var9, var7, gLT);
- }
- }
-
- var9 += xSz;
- }
-
- var7 += ySz;
- }
- }
-
- return var3;
- }
- }
-
- public int GameEnd() {
- byte var3 = 1;
- int[] var4 = new int[MAX_IMG + 1];
-
- for(int var2 = 0; var2 <= MAX_IMG; ++var2) {
- var4[var2] = 0;
- }
-
- for(int var6 = 0; var6 <= MAX_Y; ++var6) {
- for(int var1 = 0; var1 <= MAX_X; ++var1) {
- ++var4[this.currCanvas[var6][var1]];
- }
- }
-
- for(int var7 = 7; var7 <= MAX_IMG; ++var7) {
- int var5 = var4[var7];
- if (var5 == 1) {
- var3 = -1;
- var7 = MAX_IMG + 1;
- } else if (var3 == 1 && var5 > 1) {
- var3 = 0;
- }
- }
-
- return var3;
- }
-
- public void commandAction(Command var1, Displayable var2) {
- if (var1 == this.cmExit) {
- try {
- this.field_2 = RecordStore.openRecordStore("D", true);
- if (this.field_2.getNumRecords() == 0) {
- this.field_2.addRecord(this.xDat, 0, 2);
- }
-
- this.field_2.setRecord(1, this.xDat, 0, this.xDat.length);
- } catch (Exception var5) {
- }
-
- try {
- this.field_2.closeRecordStore();
- } catch (Exception var4) {
- }
-
- this.midlet.exitMIDlet();
- } else if (var1 == this.cmInfo) {
- this.midlet.showInfo();
- } else if (var1 == this.cmAbout) {
- this.midlet.showAbout();
- }
-
- }
-
- static {
- MAX_LEVEL = biDat.length;
- mvName = "UDLR";
- hisKeys = new int[]{50, 56, 52, 54};
- }
- }
-